-- @Author: 作者QQ381990860
-- @Date:   2021-10-14 22:46:38
-- @Last Modified by:   作者QQ381990860
-- @Last Modified time: 2022-09-18 07:17:53

local 场景类_道具仓库 = class(窗口逻辑)
local tp,zts,zts1
local tonumbe = tonumber
local insert = table.insert

function 场景类_道具仓库:初始化(根)
    self.ID = 27
    self.x = 112
    self.y = 145
    self.xx = 0
    self.yy = 0
    self.注释 = "道具仓库"
    self.可视 = false
    self.鼠标 = false
    self.焦点 = false
    self.可移动 = true
    local 资源 = 根.资源
    local 按钮 =  根._按钮
    local 自适应 = 根._自适应
    self.资源组 = {
        [1] = 自适应.创建(0,1,574,351,3,9),
        [2] = 按钮(自适应.创建(18,4,16,16,4,3),0,0,4,true,true),
        [3] = 按钮(自适应.创建(12,4,55,20,1,3),0,0,4,true,true,"购买"),
        [4] = 自适应.创建(3,1,30,18,1,3),

        [5] =  按钮.创建(资源:载入('UI.dll',"网易WDF动画",0x00000073),0,0,4,true,true,"道具壹"),
        [6] =  按钮.创建(资源:载入('UI.dll',"网易WDF动画",0x00000073),0,0,4,true,true,"道具贰"),
        [7] =  按钮.创建(资源:载入('UI.dll',"网易WDF动画",0x00000073),0,0,4,true,true,"道具叁"),
        [8] =  按钮.创建(资源:载入('UI.dll',"网易WDF动画",0x00000073),0,0,4,true,true,"道具肆"),
        [9] =  按钮.创建(资源:载入('UI.dll',"网易WDF动画",0x00000073),0,0,4,true,true," 行囊"),

        [10] = 按钮(自适应.创建(12,4,55,20,1,3),0,0,4,true,true,"整理"),
        [11] = 按钮(自适应.创建(12,4,55,20,1,3),0,0,4,true,true,"存钱"),
        [12] = 按钮(自适应.创建(12,4,55,20,1,3),0,0,4,true,true,"取钱"),
    }

    self.页码={}
    for n=1,30 do
        self.页码[n]=按钮(自适应.创建(12,4,23,20,1,3),0,0,4,true,true,n)
    end

    self.仓库 = {}
    self.物品 = {}
    self.状态 = "包裹"
    local 格子 = 根._物品格子
    for i=1,20 do
        self.仓库[i] = 格子(0,0,i,"仓库")
        self.物品[i] = 格子(0,0,i,"物品")
    end

    for i=1,30 do
        self.页码[i]:置偏移(0,-1)
        self.页码[i]:绑定窗口_(27)
      if self.页码[i] ~= nil and i >= 10 then
        self.页码[i]:置偏移(-4,-1)
      end

    end

    for n=2,12 do
        if self.资源组[n] ~= nil and n~=4 then
        self.资源组[n]:绑定窗口_(27)
        end
    end

    for n=5,9 do
       self.资源组[n]:置偏移(-4,-2)
    end


    -- 定义输入框
    self.控件类 = require("ggeui/加载类")()
    local 总控件 = self.控件类:创建控件('创建控件')
    总控件:置可视(true,true)
    self.输入框 = 总控件:创建输入("银两给予",self.x+1,self.y+1,100,14,根)
    self.输入框:置限制字数(8)
    self.输入框:置数字模式()
    self.输入框:置光标颜色(0xFF000000)
    local 总控件 = self.控件类:创建控件('物品空间')
    总控件:置可视(true,true)
    self.物品数量 = 总控件:创建输入("物品数量",self.x + 53,self.y + 153,100,14)
    self.物品数量:置可视(false,false)
    self.物品数量:置数字模式()
    self.物品数量:置限制字数(3)
    self.物品数量:置光标颜色(0xFF000000)
    self.物品数量:置文字颜色(0xFF000000)

    self.仓库数量 = 总控件:创建输入("仓库数量",self.x,self.y + 153,100,14)
    self.仓库数量:置可视(false,false)
    self.仓库数量:置数字模式()
    self.仓库数量:置限制字数(3)
    self.仓库数量:置光标颜色(0xFF000000)
    self.仓库数量:置文字颜色(0xFF000000)

    self.仓库开始 = 1
    self.仓库结束 = 20
    self.选中仓库 = nil
    self.选中物品 = nil
    self.选中物品数量 = nil
    self.选中仓库 = nil
    self.选中仓库数量 = nil
    self.仓库页数 = 1
    self.窗口时间 = 0
    self.验证组 = {}
    self.验证时间 = 0
    tp = 根
    zts = tp.字体表.普通字体
    zts1 = tp.字体表.描边字体
    self.数据={}
    self.总数 = 0
end

function 场景类_道具仓库:刷新仓库数据(数据)
    self.物品数量:置可视(false,false)
    self.仓库数量:置可视(false,false)
    self.仓库页数 =数据.类型
    self.总数 =数据.总数
    for i=1,20 do
        self.仓库[i]:置物品(nil)
        if 数据[i] ~=nil  then
         self.仓库[i]:置物品(数据[i].道具)
        end
    end


end
function 场景类_道具仓库:打开(数据)
    if self.可视 then
        self.输入框:置焦点(false)
        self.输入框:置可视(false,false)
        self.输入框:置文本(0)

        self.仓库开始 = 1
        self.仓库结束 = 20
        self.选中仓库 = nil
        self.选中物品 = nil
        self.选中物品数量 = nil
        self.选中仓库 = nil
        self.选中仓库数量 = nil
        for i=1,20 do
            self.物品[i]:置物品(nil)
            self.物品[i].确定 = false
        end
        for i=self.仓库开始,self.仓库结束 do
            self.仓库[i]:置物品(nil)
            self.仓库[i].确定 = false
        end
        self.物品数量:置可视(false,false)
        self.仓库数量:置可视(false,false)
        self.可视 = false
    else
        if  self.x > 全局游戏宽度 then
        self.x = 112
        end
        self.物品数量:置可视(false,false)
        self.仓库数量:置可视(false,false)
        self.状态 = "包裹"
        self.仓库页数 = 1
        insert(tp.窗口_,self)
        self.数据 = 数据

        self.输入框:置文本(0)

        for i=1,20 do
            self.物品[i]:置物品(self.数据[i])
        end
        self.回收分类 = 回收分类
        tp.运行时间 = tp.运行时间 + 1
        self.窗口时间 = tp.运行时间
        self.可视 = true
    end
end


function 场景类_道具仓库:存放事件(id)
    self.物品[id].确定 = false
         self.选择物品= nil
      self.选择仓库 =nil
          客户端:发送数据(id, self.仓库页数, 20, self.状态,tonumbe(self.物品数量:取文本()))
end

function 场景类_道具仓库:拿走事件(id)
    self.仓库[id].确定 = false
     self.选择物品= nil
      self.选择仓库 =nil

 客户端:发送数据(id, self.仓库页数, 21, self.状态,tonumbe(self.仓库数量:取文本()))
end

function 场景类_道具仓库:显示(dt,x,y)
    self.焦点 = false
    self.资源组[2]:更新(x,y)
    self.资源组[3]:更新(x,y)

    self.资源组[5]:更新(x,y)
    self.资源组[6]:更新(x,y)
    self.资源组[7]:更新(x,y)
    self.资源组[8]:更新(x,y)
    self.资源组[9]:更新(x,y)

    self.资源组[10]:更新(x,y)
    self.资源组[11]:更新(x,y)
    self.资源组[12]:更新(x,y)

    for n=1,30 do
        self.页码[n]:更新(x,y,n <= self.总数)
       if self.页码[n]:事件判断() then
            客户端:发送数据(n, 12, 13, "11", 2)
       end
    end

    if  self.资源组[2]:事件判断() then
        self:打开()

    elseif self.资源组[11]:事件判断() then
          客户端:发送数据(tonumber(self.输入框:取文本()), 48, 13, 取随机数(1, 99999) .. "", 1)
          self.输入框:置文本(0)
    elseif self.资源组[12]:事件判断() then
          客户端:发送数据(tonumber(self.输入框:取文本()), 49, 13, 取随机数(1, 99999) .. "", 1)
          self.输入框:置文本(0)

    elseif self.资源组[3]:事件判断() then
        tp.窗口.文本栏:载入("#H/此次扩充仓库需要扣除 50W 银子,是否确认扩充","扩充仓库",true)

    elseif self.资源组[5]:事件判断() then
        self.状态 = "包裹"
        if self.选择物品~= nil then
        self.物品[self.选择物品].确定 = false
        self.选择物品= nil
        end
        客户端:发送数据(6, 11, 13, self.状态, 2)
    elseif self.资源组[6]:事件判断() then

    elseif self.资源组[7]:事件判断() then

    elseif self.资源组[8]:事件判断() then

    elseif self.资源组[9]:事件判断() then
        self.状态 = "行囊"
        if self.选择物品~= nil then
        self.物品[self.选择物品].确定 = false
        self.选择物品= nil
        end
        客户端:发送数据(6, 11, 13, self.状态, 2)

    elseif self.资源组[10]:事件判断() then
        客户端:发送数据(self.仓库页数, 245, 13, "11")
    end

    self.资源组[1]:显示(self.x,self.y)
    self.资源组[2]:显示(self.x + self.资源组[1].宽度-20,self.y + 3)

    tp.窗口标题背景_:显示(self.x+80,self.y)
    tp.窗口标题背景_:显示(self.x+360,self.y)

    zts1:显示(self.x+125,self.y+1,"仓  库")
    zts1:显示(self.x+405,self.y+1,"道具行囊")
    zts:置颜色(0xFFFFFFFF)
    zts:显示(self.x+21,self.y+245,"仓 库")
    zts:显示(self.x+308,self.y+275,"银行存款")
    zts:显示(self.x+308,self.y+300,"存取金额")

    self.资源组[4]:置宽高(30,18)
    self.资源组[4]:显示(self.x+60,self.y+243)

    tp.物品格子背景_:显示(self.x+14,self.y+31)
    tp.物品格子背景_:显示(self.x+305,self.y+31)

    local xx = 0
    local yy = 0
    for n=1,30 do
        self.页码[n]:显示(self.x+5+27*xx,self.y+270+yy*26)
        xx = xx + 1
        if xx > 9 then
            xx = 0
            yy = yy + 1
        end
    end

    self.资源组[3]:显示(self.x + 108,self.y + 242,true)
    self.资源组[10]:显示(self.x + 208,self.y + 242,true)

    self.资源组[5]:显示(self.x+305,self.y+235)
    self.资源组[6]:显示(self.x+356,self.y+235)
    self.资源组[7]:显示(self.x+407,self.y+235)
    self.资源组[8]:显示(self.x+458,self.y+235)
    self.资源组[9]:显示(self.x+509,self.y+235)

    self.资源组[11]:显示(self.x + 500,self.y + 323,true)
    self.资源组[12]:显示(self.x + 420,self.y + 323,true)

    for i=0,1 do
        self.资源组[4]:置宽高(180,18)
        self.资源组[4]:显示(self.x+370,self.y+273+i*25)
    end

 zts:置颜色(引擎.取金钱颜色(self.数据.存银))
 zts:显示(self.x+375,self.y+275,self.数据.存银)
 self.输入框:置坐标(self.x+262,self.y+154)
 self.输入框:置可视(true,true)
 self.输入框:置文字颜色(引擎.取金钱颜色(tonumber(self.输入框:取文本())))

    local xx = 0
    local yy = 0
    for i=1,20 do
        local jx = xx*51+306
        local jy = yy*51+29
        self.物品[i]:置坐标(jx + self.x,jy + self.y)
        self.物品[i]:显示(dt,x,y,self.鼠标)
        jx = jx-291
        self.仓库[self.仓库开始-1+i]:置坐标(jx + self.x,jy + self.y)
        self.仓库[self.仓库开始-1+i]:显示(dt,x,y,self.鼠标)
        if self.物品[i].焦点 then
            if self.物品[i].物品 ~= nil then
                tp.提示:道具行囊(x,y,self.物品[i].物品)
                if self.物品[i].事件 then
                    if self.选择物品 ~= nil then
                        self.物品[self.选择物品].确定 = false
                    end
                    self.选择物品 = i
                    self.选择物品数量 = 1
                    self.物品[i].确定 = true
                    self.物品数量:置文本(self.选择物品数量)
                    self.物品数量:置可视(false,false)
                elseif self.物品[i].右键 then
                self:存放事件(i)
                end
            end
        elseif self.仓库[i].焦点 then
            if self.仓库[i].物品 ~= nil then
                tp.提示:道具行囊(x,y,self.仓库[i].物品)
                if self.仓库[i].事件 then
                    if self.仓库[i].物品 ~= nil and self.仓库[i].焦点 then
                        if self.选择仓库 ~= nil then
                            self.仓库[self.选择仓库].确定 = false
                        end
                        self.选择仓库 = i
                        self.选择仓库数量 = 1
                        self.仓库[i].确定 = true
                        self.仓库数量:置文本(self.选择仓库数量)
                        self.仓库数量:置可视(false,false)
                    end
                elseif self.仓库[i].右键 then
                    self:拿走事件(i)
                end
            end
        end
        xx = xx + 1
        if xx == 5 then
            xx = 0
            yy = yy + 1
        end
    end
    if self.选择物品 ~= nil then
        self.物品数量:置坐标(self.x+202,self.y-51)
        local s = tonumbe(self.物品数量:取文本())
        local v
        if self.物品[self.选择物品].物品 and self.物品[self.选择物品].物品.数量 ==nil then
         v=1
         elseif self.物品[self.选择物品].物品 then
            v= tonumbe(self.物品[self.选择物品].物品.数量)
        end

        if s == nil or s <= 0 then
            s = 1
        end
        if v == nil then
            v = 1
        end
        if s > v then
            if self.物品[self.选择物品].物品.数量 == 0 then
                self.物品数量:置文本(1)
            else
                self.物品数量:置文本(v)
            end
        end
    end
    if self.选择仓库 ~= nil and self.仓库[self.选择仓库].物品 then
        local xz = tonumbe(self.仓库数量:取文本())
                        local v = 1
                        if self.仓库[self.选择仓库].物品.数量 ~= nil then
                        v = tonumbe(self.仓库[self.选择仓库].物品.数量)
                        end
                        if xz == nil or xz <= 0 then
                            xz = 1
                            self.仓库数量:置文本(xz)
                        end
                        if xz > v then
                            if v == 0 then
                                self.仓库数量:置文本(1)
                            else
                                self.仓库数量:置文本(v)
                            end
                        end
                        self.仓库数量:置坐标(self.x-39,self.y-51)
    end
    zts:置颜色(0xFF000000)
    zts:显示(self.x + 65,self.y + 245,self.仓库页数)

    if self.输入框._已碰撞 then
     self.焦点 = true
    end

    self.控件类:更新(dt,x,y)
    self.控件类:显示(x,y)
    if  self.物品数量._已碰撞 or self.仓库数量._已碰撞  then
        self.焦点 = true
    end

end

function 场景类_道具仓库:检查点(x,y)
    if self.资源组[1]:是否选中(x,y)  then
        return true
    end
end

function 场景类_道具仓库:判断仓库数量(页数)
    local i = 页数 * 20
    local sl = 0
    for m=i-19,i do
        if self.仓库[m].物品 == nil then
            sl = sl + 1
        end
    end
    return sl
end

function 场景类_道具仓库:增加仓库物品(页数,物品1,物品2,选择,数量)
    local i = 页数 * 20
    local sl = 0
    local xt = false
    for s=i-19,i do
        if self.仓库[s].物品 ~= nil and self.仓库[s].物品.名称 == 物品1.名称 and self.仓库[s].物品.可叠加  then
            xt = true
        end
    end
    for s=i-19,i do
        if self.仓库[s].物品 == nil and xt == false then
            self.仓库[s]:置物品(物品1)
            self.仓库[s].物品.数量 = 数量
            if 物品2.数量 == nil then
                物品2.数量 = 1
            end
            local sls = 物品2.数量 - 数量
            物品2.数量 = sls
            if 物品2.数量 ~= sls then
                引擎.关闭()
                return false
            end
            self.验证组={"物品",选择,sls}
            if sls <= 0 then
                物品2 = nil
                self.选择物品 = nil
                self.选择物品数量 = nil
                self.物品[选择].确定 = false
                self.物品数量:置可视(false,false)
            end
            sls = nil
            tp.道具仓库[s] = self.仓库[s].物品
            break
        elseif self.仓库[s].物品 ~= nil and self.仓库[s].物品.名称 == 物品1.名称 and self.仓库[s].物品.可叠加 and xt == true then
            if tonumber(self.仓库[s].物品.数量) < 9999 then
                self.仓库[s].物品.数量 = self.仓库[s].物品.数量 + 数量
                if self.仓库[s].物品.数量 > 9999 then
                    local sl = self.仓库[s].物品.数量 - 9999
                    self.仓库[s].物品.数量 = self.仓库[s].物品.数量 - sl
                end
                local sls = 物品2.数量 - 数量
                物品2.数量 = sls
                if 物品2.数量 ~= sls then
                    引擎.关闭()
                    return false
                end
                self.验证组={"物品",选择,sls}
                if sls <= 0 then
                    物品2 = nil
                    self.选择物品 = nil
                    self.选择物品数量 = nil
                    self.物品[选择].确定 = false
                    self.物品数量:置可视(false,false)
                end
                tp.道具仓库[s] = self.仓库[s].物品
                sls = nil
                break
            else
                tp.提示:写入("#Y/超出最大可存放数量")
            end
        end
    end
    刷新道具逻辑(物品2,选择,true)
end

return 场景类_道具仓库